package com.shuo.dsa.niuke;

import com.shuo.dsa.model.ListNode;

import java.util.ArrayList;
import java.util.Stack;

/**
 * 输入一个链表，按链表值从尾到头的顺序返回一个ArrayList
 * * 注意, 在遍历栈的时候千万不要在for循环中把stack.size()作为条件, 因为其size是动态的, pop减size
 */
public class PrintListFromTail {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> stack = new Stack<>();
        while (listNode != null) {
            stack.push(listNode.val);
            listNode = listNode.next;
        }
        ArrayList<Integer> list = new ArrayList<>();
        while (!stack.isEmpty()) {
            list.add(stack.pop());
        }
        return list;
    }

    ArrayList<Integer> list = new ArrayList<>();

    public ArrayList<Integer> printListFromTailToHeadCur(ListNode listNode) {
        if (listNode != null) {
            printListFromTailToHeadCur(listNode);
            list.add(listNode.val);
        }
        return list;
    }
}
